Field of the Invention
The present invention relates to the information technology field. More specifically, the invention relates to the monitoring of components in a service framework.
Description of the Related Art
Monitoring software programs in a data processing system is of the utmost importance in several management applications. A typical example consists of a license management application, which is used to collect information about known programs installed and/or running on the system (for example, for charge-back accounting). A commercial license management application available on the market is the “IBM Tivoli License Manager (ITLM)” by IBM Corporation.
Generally, the license management application monitors the processes that are active on the system (for example, by retrieving a list of the active processes periodically or by intercepting the starting of every new process). The program associated with each active process is then identified by comparing characteristics of the active process with predefined signatures of all the known programs to be monitored (stored in a software catalogue); generally, each signature specifies one or more attributes (such as name and size) of an executable module associated with the active process (which running indicates the usage of the corresponding program).
However, this approach is not of general applicability. Particularly, the above-described licensing management applications are unable to monitor the usage of interpreted programs—for example, JAVA programs executed in a JAVA Virtual Machine (JVM). Indeed, each JAVA program consists of a series of instructions (written in a high-level language), which instructions are executed one at a time by the JVM. Therefore, when the JAVA program runs, the corresponding active process is only the one associated with the JVM (so that the above-described solution detects the usage of the JVM, but it is completely unable to identify the JAVA program that is executed by the JVM).
A specific example is that of JAVA programs implementing services. Generally speaking, a service consists of a stand-alone basic task; the service may be requested through a well-defined interface, which is independent of its underlying implementation. This promotes the reuse and the interconnection of the services (even among different platforms).
For example, a very popular technology for managing services in the JAVA environment is the one conforming to the Open Services Gateway Initiative (OSGi) standard. The OSGi standard defines a service gateway, wherein the services can discover each other dynamically; in this way, it is possible to deploy new services to any system without requiring its restart. The OSGi standard strongly improves the responsiveness to changing market conditions; moreover, this enables additional after-market opportunities (with the possibility of delivering new services directly in the field).
However, as pointed out above, the licensing management applications known in the art are unable to monitor the usage of the services implemented by the JAVA programs.
In order to solve this problem, in the current practice the JAVA programs are instrumented with a JAVA toolkit being provided by the licensing management application; in this way, each JAVA program is updated to include a call to the licensing management application for notifying its start and stop. However, this solution is ineffective to detect the usage of most of the services—whose JAVA programs are not expressly instrumented for this purpose.
All of the above prevents the implementation of an efficient mechanism for monitoring the services. The problem is very critical, since the service-based applications are becoming increasingly popular, and they are expected to represent a large share of the market.